const moment = require("moment")

const models = require(__base + '/models');
const errcode = require(__util + "/errcode")
const ct = require(__util + "/catch"); // 路由错误捕获(不使用则不会捕获异常错误)

module.exports = ct(async (req, res) => {
  const { endpoint, status = "unused" } = req.body
  // 判断节点是否为空
  if (!endpoint) {
    return res.json(errcode.ENDPOINT_EMPTY)
  }
  // 判断节点状态是否合法
  if (["using", "unused", "stopped"].indexOf(status) < 0) {
    return res.json(errcode.ENDPOINT_STATUS_INVALID)
  }
  // 判断节点是否存在, 不存在则新建
  let [endpointInfo, isNew] = await models.Eosendpoint.findOrCreate({ 
    where: {
      endpoint: endpoint
    }, 
    defaults: {
      status: status,
      testTotal: 0,
      successTotal: 0,
      failTotal: 0
    }
  })
  if (!isNew) {
    return res.json(errcode.ENDPOINT_EXIST)
  }
  // 获取数据内部模型类
  endpointInfo = endpointInfo.get({ plain: true })
  // 利用对象的解构，取出非createdAt的所有字段
  const { createdAt, ...newEndpointInfo } = endpointInfo
  // 转换时间
  newEndpointInfo.updatedAt = moment(createdAt).format("YYYY-MM-DD HH:mm:ssss")

  return res.json(
    errcode.SUCCESS(newEndpointInfo)
  )
})